SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TTAMAR_NCPA_D01]
/*-------------------------------------------------------*/      
/*---Empresa              : OFISIS S.A.                --*/      
/*---Cliente              : OFISIS                 --*/      
/*---Sistema              : Tesoreria                  --*/      
/*---M¸dulo               : Empresa                    --*/      
/*---Programa             : Anulaci©n Aplicaci©n       --*/      
/*---                       Notas Credito con Facturas --*/      
/*---Script               : SP_TTAMAR_NCPA_D01.SQL--*/      
/*---Nombre SP            : SP_TTAMAR_NCPA_D01    --*/      
/*---Desarrollado por     : Eduardo Vivar Pomiano      --*/      
/*---Fecha Creaci¸n       : 25/02/2000                 --*/      
/*---Base Datos           : Microsoft Sql Server       --*/      
/*---Versi¸n              : 7.0                        --*/      
/*---Invoca a SP          :                            --*/      
/*-------------------------------------------------------*/      
      
/*-------------------------------------------------------*/      
/*---Modificado 1 por     : Eduardo Vivar Pomiano      --*/      
/*---Fecha Modificaci¸n   : 29/05/2000                 --*/       
/*---Detalle Modificaci¸n : USO MONEDAS DEFALUT Y EXTR.--*/      
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/    
/*---Modificado 2 por     : Maribel Julca Rodriguez    --*/    
/*---Fecha Modificaci©n   : 21/04/2005                 --*/     
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA, CO_USUA_MODI  --*/    
/*-------------------------------------------------------*/    
      
/*-------------------------------------------------------*/      
/*---Comentarios                                       --*/      
/*---                                                  --*/      
/*---                                                  --*/      
/*-------------------------------------------------------*/      
      
/*-------------------------------------------------------*/      
/*---Drop Proc SP_TTAMAR_NCPA_D01                 --*/      
/*---Grant all on SP_TTAMAR_NCPA_D01 to public    --*/       
/*---SP_TTAMAR_NCPA_D01   '99','sa', '00000001','10012198','900','01/02/2000'                  --*/      
/*-------------------------------------------------------*/      
 @ISCO_EMPR       TD_VC_002,       
 @ISCO_USUA_MODI  TD_VC_008,      
 @ISCO_UNID_CONC  TD_VC_003,    
 @ISNU_AMAR       TD_VC_008,     
 @IDFE_AMAR       TD_DT_001,      
 @ISCO_PROV       TD_VC_020,      
 @ISCO_TIPO_OPER  TD_VC_003,       
 @IDFE_ANUL       TD_DT_001
As
DECLARE  @CSTI_DOCU_DEST  TD_VC_003,       
         @CSNU_DOCU_DEST  TD_VC_020,        
         @CNIM_PAGO_CDES  TD_NU_016_004,       
         @VNIM_TOTA_DOCU  TD_NU_016_004,       
         @CSCO_ENTI    TD_VC_020,       
         @CSTI_DOCU_ORIG  TD_VC_003,       
         @CSNU_DOCU_ORIG  TD_VC_020,       
         @CNIM_PAGO_CORI  TD_NU_016_004,        
         @VSCO_MONE       TD_VC_003,      
         @VSCO_MONE_DOCU  TD_VC_003,      
         @VNFA_TIPO_CAMB  TD_NU_015_006,      
         @VSCO_MONE_DEFA  TD_VC_003,      
         @VSCO_MONE_EXTR  TD_VC_003,      
         @OSTI_DOCU_LETR  TD_VC_003,      
         @VSCO_TIPO_EGAN        TD_VC_003,       
         @VSST_GEAS_ANUL        TD_VC_001,    
         @VSCO_TIPO_OPE1        TD_VC_003,
	     @OSNU_ASTO			TD_VC_010,
	     @VSST_INTE_BACH		TD_VC_001,
	     @VSST_ASTO_RESU		TD_VC_001,
	     @VSTI_OPNI_CARG		TD_VC_001,
	     @VSTI_OPNI_ABON		TD_VC_001
    
  /***  PRIMERO LIBERA DOCUMENTOS  DESTINOS  ***/        
      
 BEGIN TRAN SP_TTAMAR_NCPA_D01      
      
     EXEC SP_TTDOCU_CNTB_Q02 6, @OSTI_DOCU_LETR OUTPUT      
      
     Select @VSCO_MONE = CO_MONE, @VNFA_TIPO_CAMB = FA_TIPO_CAMB      
     From   TCAMAR_NCPR      
     Where  CO_EMPR = @ISCO_EMPR    
     And    CO_UNID_CONC = @ISCO_UNID_CONC    
     And    NU_AMAR = @ISNU_AMAR      
     AND    FE_AMAR = @IDFE_AMAR         
    
     Select @VSCO_MONE_DEFA = CO_MONE_DEFA,      
            @VSCO_MONE_EXTR = CO_MONE_EXTR      
     From   TMPARA_TESO      
     Where  CO_EMPR = @ISCO_EMPR       
      
     DECLARE CU_TTAMAR_NCPA_D01 CURSOR       
     FOR      
     SELECT CO_ENTI, CO_TIDO_DEST , NU_DOCU_DEST , Isnull (IM_PAGO_CDES , 0)      
     FROM   TDAMAR_NCPR      
     WHERE  CO_EMPR = @ISCO_EMPR       
     And    CO_UNID_CONC = @ISCO_UNID_CONC    
     AND    NU_AMAR  = @ISNU_AMAR       
     AND    FE_AMAR = @IDFE_AMAR       
     AND    CO_TIDO_ORIG is NULL       
     AND    NU_DOCU_ORIG is NULL          
      
     OPEN CU_TTAMAR_NCPA_D01      
     FETCH  CU_TTAMAR_NCPA_D01 INTO @CSCO_ENTI, @CSTI_DOCU_DEST , @CSNU_DOCU_DEST , @CNIM_PAGO_CDES      
      
     WHILE (@@FETCH_STATUS = 0)      
       BEGIN      
         IF (@@FETCH_STATUS < 0)      
        Begin      
              RAISERROR 20001 'FIN DE ARCHIVO'    
              Close CU_TTAMAR_NCPA_D01      
              DEALLOCATE CU_TTAMAR_NCPA_D01      
              Return            
            End        
                 
 IF @CSTI_DOCU_DEST != @OSTI_DOCU_LETR      
   Update TMDOCU_PROV      
   Set IM_PAGA = Isnull(IM_PAGA,0) - @CNIM_PAGO_CDES , CO_ESTA_DOCU = 'ACT',      
          CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()      
   WHERE CO_EMPR = @ISCO_EMPR       
          AND   CO_PROV = @CSCO_ENTI      
          AND   CO_TIPO_DOCU = @CSTI_DOCU_DEST       
          AND   NU_DOCU_PROV = @CSNU_DOCU_DEST      
 ELSE      
   Update TMLETR_PROV      
   Set IM_PAGA = Isnull(IM_PAGA,0) - @CNIM_PAGO_CDES , CO_ESTA_DOCU = 'ACE',      
          CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()      
   WHERE CO_EMPR = @ISCO_EMPR       
          AND   CO_PROV = @CSCO_ENTI      
          AND   NU_LETR_PROV = @CSNU_DOCU_DEST      
       
      
 If @@error <> 0      
 Begin      
      CLOSE CU_TTAMAR_NCPA_D01      
      DEALLOCATE CU_TTAMAR_NCPA_D01      
      rollback tran       
      return      
 end      
      
        FETCH  CU_TTAMAR_NCPA_D01 INTO @CSCO_ENTI, @CSTI_DOCU_DEST , @CSNU_DOCU_DEST , @CNIM_PAGO_CDES      
     END       
      
 CLOSE CU_TTAMAR_NCPA_D01      
 DEALLOCATE CU_TTAMAR_NCPA_D01      
      
 /* ********* LIBERA DOCUMENTOS ORIGENES  ********** */        
      
     DECLARE CU_TTAMAR_NCPA_D01 CURSOR       
     FOR      
     SELECT CO_ENTI, CO_TIDO_ORIG , NU_DOCU_ORIG , IM_PAGO_CORI      
     FROM   TDAMAR_NCPR      
     WHERE  CO_EMPR = @ISCO_EMPR       
     And    CO_UNID_CONC = @ISCO_UNID_CONC    
     AND    NU_AMAR = @ISNU_AMAR       
     AND    FE_AMAR = @IDFE_AMAR       
     AND    CO_TIDO_DEST is NULL       
     AND    NU_DOCU_DEST is NULL          
      
     OPEN CU_TTAMAR_NCPA_D01      
     FETCH  CU_TTAMAR_NCPA_D01 INTO @CSCO_ENTI, @CSTI_DOCU_ORIG , @CSNU_DOCU_ORIG , @CNIM_PAGO_CORI      
      
     WHILE (@@FETCH_STATUS = 0)      
      BEGIN      
       IF (@@FETCH_STATUS < 0)      
      BEGIN      
     RAISERROR 20001 'FIN DE ARCHIVO'    
     CLOSE CU_TTAMAR_NCPA_D01      
     DEALLOCATE CU_TTAMAR_NCPA_D01      
     RETURN      
           END      
      
      
 UPDATE TMDOCU_PROV      
 Set IM_PAGA = Isnull(IM_PAGA,0) - @CNIM_PAGO_CORI , CO_ESTA_DOCU = 'ACT',      
        CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()      
 WHERE CO_EMPR = @ISCO_EMPR       
        AND   CO_PROV = @CSCO_ENTI      
        AND   CO_TIPO_DOCU = @CSTI_DOCU_ORIG       
        AND   NU_DOCU_PROV = @CSNU_DOCU_ORIG      
      
 If @@error <> 0      
           Begin      
      CLOSE CU_TTAMAR_NCPA_D01      
    DEALLOCATE CU_TTAMAR_NCPA_D01      
             rollback tran       
             return      
           End      
      
       FETCH  CU_TTAMAR_NCPA_D01 INTO @CSCO_ENTI, @CSTI_DOCU_ORIG , @CSNU_DOCU_ORIG , @CNIM_PAGO_CORI      
      
     END       
      
 CLOSE CU_TTAMAR_NCPA_D01      
 DEALLOCATE CU_TTAMAR_NCPA_D01      
    
 SELECT @VSCO_TIPO_EGAN = CO_TIPO_OPEG, @VSST_GEAS_ANUL = ST_GEAS_ANUL    
 FROM   TMPARA_TESO     
 WHERE  CO_EMPR = @ISCO_EMPR    
    
 If @VSST_GEAS_ANUL = 'N'    
    Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_EGAN    
 Else        
   Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER    

	-- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --
If  @IDFE_AMAR < @IDFE_ANUL And Month( @IDFE_AMAR ) != Month( @IDFE_ANUL )
 UPDATE TCAMAR_NCPR      
 SET   CO_TIPO_OPER = @VSCO_TIPO_OPE1,    
       TI_SITU = 'EXT', CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()      
 WHERE CO_EMPR = @ISCO_EMPR       
 And    CO_UNID_CONC = @ISCO_UNID_CONC    
 AND   NU_AMAR = @ISNU_AMAR       
 AND   FE_AMAR = @IDFE_AMAR       

Else
 UPDATE TCAMAR_NCPR      
 SET   CO_TIPO_OPER = @VSCO_TIPO_OPE1,    
       TI_SITU = 'ANU', CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()      
 WHERE CO_EMPR = @ISCO_EMPR       
 And    CO_UNID_CONC = @ISCO_UNID_CONC    
 AND   NU_AMAR = @ISNU_AMAR       
 AND   FE_AMAR = @IDFE_AMAR       
	
If @@error <> 0  
Begin  
	RollBack Tran SP_TTAMAR_NCPA_D01
	Return  
End  


/**-----Verifica si es interface en Linea s/n------*/
Select	@VSST_INTE_BACH = ST_INTE_BACH,  
		@VSTI_OPNI_CARG = CO_TIPO_OPEG, 
        @VSTI_OPNI_ABON = CO_TIPO_OPER  
From TMPARA_TESO 
Where CO_EMPR = @ISCO_EMPR

/**-----Verifica si se genera asientos Resumidos ------*/	
Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))      
From   TMOPRC_RESU t1 , TDTIPO_OPER t2      
Where  t2.CO_EMPR = @ISCO_EMPR 
And    t2.CO_TIPO_OPER = @ISCO_TIPO_OPER 
And    t1.CO_EMPR = t2.CO_EMPR 
And    t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB

/**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/	
If	@VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND 
	@ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And
	@IDFE_AMAR < @IDFE_ANUL And Month( @IDFE_AMAR ) != Month( @IDFE_ANUL )  
Begin
		
	/*-----Optiene el Numero de Asiento -----*/				
	EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO OUTPUT  
	IF (@@ERROR != 0)      
	Begin  
		RollBack Tran  SP_TTAMAR_NCPA_D01
		Return  
	End  

End  
      
 Insert into TTAMAR_NCPA (CO_EMPR, CO_UNID_CONC, NU_AMAR, FE_AMAR, CO_TIPO_OPER, FE_ANUL, ST_CONT, CO_USUA_CREA,FE_USUA_CREA, 
CO_USUA_MODI, FE_USUA_MODI, NU_ASTO)
 Values (@ISCO_EMPR, @ISCO_UNID_CONC, @ISNU_AMAR, @IDFE_AMAR, @VSCO_TIPO_OPE1, @IDFE_ANUL, 'N', @ISCO_USUA_MODI,GETDATE(), 
@ISCO_USUA_MODI, GETDATE(), @OSNU_ASTO)      
      
 If @@error <> 0      
    begin      
       rollback tran       
       return      
    end      
      
COMMIT TRAN       
      
/*------------------------ Fin ------------------------------*/


GO
